package com.deparse.mydialog.listview;

import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.ActionMode;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ListView;

import com.deparse.mydialog.R;

import java.lang.reflect.Field;
import java.util.List;

/**
 * Created by Administrator on 2016/7/22.
 */
public class ListAttributeActivity extends BaseListActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        ListView listView = getListView();
        final MyBaseAdapter adapter = getAdapter();
        List<String> data = getListData();
//        列表就会显示你列表的最下面
//        listView.setStackFromBottom(true);

// 需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息，并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件（支持ScrollBar）自动滑动到最底部。
//        android:transcriptMode//设置列表的transcriptMode.有如下选项可选：
//(1)disabled          禁用TranscriptMode，也是默认值;
//(2)normal             当新条目添加进列表中并且已经准备好显示的时候，列表会自动滑动到底部以显示最新条目;
//(3)alwaysScroll   列表会自动滑动到底部，无论新条目是否已经准备好显示.
//        android:transcriptMode="alwaysScroll"
//        listView.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
//缓存颜色
        listView.setCacheColorHint(getResources().getColor(R.color.colorAccent));

//android:scrollbars="none"与setVerticalScrollBarEnabled(false);的效果是一样的，不活动的时候隐藏，活动的时候也隐藏
        listView.setVerticalScrollBarEnabled(true);

//        1、单击列表后，列表的背景变成了黑色了。可以指定Android:cacheColorHint的属性来放变它，我们需要将它指定为透明。使用下面的属性值：
//        android:cacheColorHint="#000000"
//        2、去除列表项中间的分割线：android:divider="#00000000"，这里的值也可以指向一个drawable图片对象(android:divider="@drawable/list_line")，如果使用了图片高度大于系统的像素的话，可以自己设定一个高度。android:dividerHight="10px"
//        3、listview在拖动时，listview的背景变成黑色。可以使用下面的代码时行解决：android:scrollingCache="false"
//        4、listview的上边和下边有黑色的阴影。可以使用下面的代码进行解决：android:fadingEdge="none"
//        5、listview右边的滑动条覆盖列表项的内容。可以使用下面的代码进行解决：android:scrollbarStyle="outsideInset"
        //        listView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_INSET);
//        6、修改listvew右边的滑动条与列表项之间的距离。可以使用下面代码进行解决：android:paddingRight="10dip"，可以根据需要进行修改。
//        7、修改右边的滑动条显示的颜色。可以使用下面的代码进行解决：
//        android:scrollbarTrackVertical="@drawable/scrollbar_vertical_track"
//        android:scrollbarThumbVertical="@drawable/scrollbar_vertical_thumb"
//        其中scrollbar_vertical_track和scrollbar_vertical_thumb是滑动条的XML配置文件
//        10. 屏蔽了所有子控件获取Focus的权限，如此就可以顺利的响应onItemClickListener中的onItenClick()方法了。
//        android:descendantFocusability有三种属性：
//        beforeDescendants：viewgroup会优先其子类控件而获取到焦点
//        afterDescendants：viewgroup只有当其子类控件不需要获取焦点时才获取焦点
//        blocksDescendants：viewgroup会覆盖子类控件而直接获得焦点

// scrollbars持续时间
        listView.setScrollBarFadeDuration(5000);

//快速滑块
        listView.setFastScrollEnabled(true);
        listView.setFastScrollAlwaysVisible(true);

//android:choiceMode//为视图指定选择的行为。可选的类型有：none、singleChoice、multipleChoice、multipleChoiceModal。
//        listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);//开启多选模式
//        listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE);//开启单选模式
//        listview.setChoiceMode(ListView.CHOICE_MODE_NONE);//默认模式
//        listview.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);//没用过，不知道用来干嘛的
        listView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                adapter.notifyDataSetChanged();
            }
        });
// 若设为true，选择器将绘制在选中条目的上层。默认为false。
        listView.setDrawSelectorOnTop(true);

//        改变fastScroll的样式用activity style
//        try {
//            Field f = AbsListView.class.getDeclaredField("mFastScroller");
//            f.setAccessible(true);
//            Object o = f.get(listView);
//            f = f.getType().getDeclaredField("mThumbDrawable");
//            f.setAccessible(true);
//            Drawable drawable = (Drawable) f.get(o);
//            //R.drawable.scrollbar为自己自定义的图片
//            drawable = getResources().getDrawable(R.mipmap.ic_launcher);
//            f.set(o, drawable);
//        } catch (Exception e) {
//            throw new RuntimeException(e);
//        }


        data.add("123");
        data.add("123");
        data.add("123");
        adapter.notifyDataSetChanged();


    }

}
